import pandas as pd
import matplotlib.pyplot as plt

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 定义文件路径
file_path = "e:\\2025软件实训\\2025-project-training\\FhjlViewDD.csv"

# 读取CSV文件
try:
    df = pd.read_csv(file_path)
    print('文件读取成功，可用列名：', ', '.join(df.columns))

    # 转换日期列为日期格式
    df['创建时间'] = pd.to_datetime(df['创建时间'])
    df['日期'] = df['创建时间'].dt.date

    # 筛选6月份的数据
    june_data = df[(df['创建时间'].dt.month == 6)]

    # a. 统计6月份每日矿粉货运量的日趋势，并画柱状图
    june_mineral_powder = june_data[june_data['货品'] == '矿粉']
    daily_mineral_powder = june_mineral_powder.groupby('日期')['净重'].sum()
    plt.figure(figsize=(12, 6))
    daily_mineral_powder.plot(kind='bar')
    plt.title('6月份每日矿粉货运量')
    plt.xlabel('日期')
    plt.ylabel('货运量（吨）')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig('june_daily_mineral_powder.png')
    plt.close()

    # b. 统计6月份每日水泥货运量的日趋势图，并画柱状图
    june_cement = june_data[june_data['货品'] == '水泥']
    daily_cement = june_cement.groupby('日期')['净重'].sum()
    plt.figure(figsize=(12, 6))
    daily_cement.plot(kind='bar')
    plt.title('6月份每日水泥货运量')
    plt.xlabel('日期')
    plt.ylabel('货运量（吨）')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig('june_daily_cement.png')
    plt.close()

    # c. 统计每个客户的6月份的货运需求量，并按大到小排序
    customer_demand = june_data.groupby('客户')['净重'].sum().sort_values(ascending=False)
    print('6月份各客户货运需求量（从大到小）：')
    print(customer_demand)

    # d. 统计6月份各发货地的发货总量，并绘制柱状图
    origin_total = june_data.groupby('发货地')['净重'].sum()
    plt.figure(figsize=(12, 6))
    origin_total.plot(kind='bar')
    plt.title('6月份各发货地发货总量')
    plt.xlabel('发货地')
    plt.ylabel('发货总量（吨）')
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig('june_origin_total.png')
    plt.close()

    # e. 统计6月份各车牌号的总货运量，并按大至小排序
    plate_total = june_data.groupby('车辆')['净重'].sum().sort_values(ascending=False)
    print('6月份各车牌号总货运量（从大到小）：')
    print(plate_total)

    

    print('统计分析完成，图表已保存。')
except Exception as e:
    print(f'处理过程中出现错误：{str(e)}')